﻿using System;
using System.Linq.Expressions;

namespace LazyMapper.Core
{
    public interface ITypeMappingSetup<TInput, TOutput> 
    {
        ITypeMappingSetup<TInput, TOutput> Constructor(Func<TInput, TOutput> method);
        ITypeMappingSetup<TInput, TOutput> ForMember<TType>(Expression<Func<TOutput, TType>> memberExpression, Action<IMappingOption<TInput, TType>> mappingOption);
        ITypeMappingSetup<TInput, TOutput> ForMember<TType>(string name, Action<TOutput, TType> memberExpression, Action<IMappingOption<TInput, TType>> mappingOption);
        ITypeMappingSetup<TInput, TOutput> BeforeMap(Action<TInput, TOutput> action);
        ITypeMappingSetup<TInput, TOutput> AfterMap(Action<TInput, TOutput> action);
        void SkipAutoBuild();
    }
}